Many enterprises (e.g., corporations, partnerships, governments, academic institutions, other organizations, etc.) find it challenging to deploy systems for managing client computing devices by using standardized operating systems and applications. For example, an enterprise may wish to deliver an image containing an operating system and a set of applications to their end users. However, the enterprise may have hundreds, if not thousands, of computing devices in the organization. To complicate matters further, the computing devices are typically not homogenous and have a set of widely ranging capabilities. Moreover, the roles of the users across the organization differ greatly, which makes the task of defining a set of applications that supports all of the wide-ranging roles a herculean effort.
Typical approaches to address these complexities usually involve narrowing down the large number of combinations to a manageable number and creating distinct images or virtual disks for each of the pre-determined device and application combinations. However, these approaches have not been without their share of problems. Each image must be built from scratch, which is time-consuming and inefficient. Each image must then be tested to ensure that the selected mix of operating system and applications are compatible with each other. And, finally, the content of the images, once created, is typically set in stone. If any of the applications comprised within the image needs to be updated, the image must be recreated and tested again from scratch.